package com.tedu.api.io;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

/**
 * listFiles()  返回值：数组---File【】  直接遍历文件，文件夹
 * 遍历文件或者文件夹同时，过滤遍历出来的文件，文件夹
 * 需求：获取“API项目下，名字开头以s名称”
 * listFiles(Filter接口) 返回值：数组---File【】
 * Filter过滤器接口：过滤遍历出来的文件，文件夹
 */


public class FilterAPI {
    public static void main(String[] args) throws IOException {
        //获取“API”项目下：File构造器传入“.”
        File file = new File("."+File.separator+"API");
        //4创建过滤器实现类
        MyFilter myFilter = new MyFilter();
        //获取APi项目下的所有文件夹  并且必须是以s开头
        File[] subs = file.listFiles(myFilter);//传入过滤器接口对象
        //5遍历数组
        for (int i = 0; i < subs.length; i++) {//5.1 i获取数组下标
            //5.2数组名【下标】
            System.out.println("过滤后文件夹：" + subs[i]);
        }
    }
}

//1自己实现类 MyFilter 实现FileFilter接口：重写所有方法
class MyFilter implements FileFilter {
    //2 accept:获取File的信息   返回值
    public boolean accept(File pathname) {
        //3 逻辑：判断获取的文件夹名字是“s”开头
        //3.1获取到过滤器传给我们pathname【file】的名称
        String name = pathname.getName();
        //3.2 打印获取到的【File】的名称
        System.out.println("获取名称是：" + name);
        //3.3 判断名称是以"s"开头  文件夹
        // String字符串提供方法：
        // 返回值 boolean   startWith(”s“) 获取字符串首字符  返回：true
        return name.startsWith("s");
    }
}
